package com.ruoyi.cbs.project.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 承包商项目对象 cbs_project
 * 
 * @author ruoyi
 * @date 2025-11-12
 */
public class Project extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 项目主键id */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;

    /** 项目编号 */
    @Excel(name = "项目编号")
    private String projectNo;

    /** 项目名称 */
    @Excel(name = "项目名称")
    private String projectName;

    /** 项目类型 */
    @Excel(name = "项目类型")
    private String projectType;

    /** 合同编号 */
    @Excel(name = "合同编号")
    private String contractNo;

    /** 标段 */
    @Excel(name = "标段")
    private String projectSection;

    /** 计划开工日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "计划开工日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date plannedStartDate;

    /** 计划竣工日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "计划竣工日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date plannedEndDate;

    /** 实际开工日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "实际开工日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date actualStartDate;

    /** 实际竣工日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "实际竣工日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date actualEndDate;

    /** 联系人 */
    @Excel(name = "联系人")
    private String contactUser;

    /** 联系人电话 */
    @Excel(name = "联系人电话")
    private String contactPhone;

    /** 承包商id(施工单位) */
    @Excel(name = "承包商id(施工单位)")
    private Long contractorId;

    /** 承包商名称(施工单位) */
    @Excel(name = "承包商名称(施工单位)")
    private String contractorName;

    /** 监理单位名称 */
    @Excel(name = "监理单位名称")
    private String supervisionUnit;

    /** 监理单位工程师 */
    @Excel(name = "监理单位工程师")
    private String supervisionEngineer;

    /** 承包商负责人ID(sys_user表id) */
    @Excel(name = "承包商负责人ID(sys_user表id)")
    private Long contractorLeaderId;

    /** 承包商(施工单位)负责人 */
    @Excel(name = "承包商(施工单位)负责人")
    private String contractorLeader;

    /** 承包商(施工单位)安全负责人 */
    @Excel(name = "承包商(施工单位)安全负责人")
    private String contractorSafetyLeader;

    /** 建设(业主)单位负责人ID(sys_user表id) */
    @Excel(name = "建设(业主)单位负责人ID(sys_user表id)")
    private Long ownerLeaderId;

    /** 建设(业主)单位负责人 */
    @Excel(name = "建设(业主)单位负责人")
    private String ownerLeader;

    /** 建设(业主)单位安全负责人 */
    @Excel(name = "建设(业主)单位安全负责人")
    private String ownerSafetyLeader;

    /** 考核人ID */
    @Excel(name = "考核人ID")
    private String evaluatorIds;

    /** 考核人姓名 */
    @Excel(name = "考核人姓名")
    private String evaluatorNames;

    /** 状态: 0未开工 1开工待审 2施工中 3验收待审 4已验收 6已停工 */
    @Excel(name = "状态: 0未开工 1开工待审 2施工中 3验收待审 4已验收 6已停工")
    private String status;

    /** 删除标志（1代表存在 0代表删除） */
    private String delFlag;

    /** 查询状态: 0全部 1未开工 2已开工 */
    private String searchStatus;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }

    public void setProjectNo(String projectNo) 
    {
        this.projectNo = projectNo;
    }

    public String getProjectNo() 
    {
        return projectNo;
    }

    public void setProjectName(String projectName) 
    {
        this.projectName = projectName;
    }

    public String getProjectName() 
    {
        return projectName;
    }

    public void setProjectType(String projectType) 
    {
        this.projectType = projectType;
    }

    public String getProjectType() 
    {
        return projectType;
    }

    public void setContractNo(String contractNo) 
    {
        this.contractNo = contractNo;
    }

    public String getContractNo() 
    {
        return contractNo;
    }

    public void setProjectSection(String projectSection) 
    {
        this.projectSection = projectSection;
    }

    public String getProjectSection() 
    {
        return projectSection;
    }

    public void setPlannedStartDate(Date plannedStartDate) 
    {
        this.plannedStartDate = plannedStartDate;
    }

    public Date getPlannedStartDate() 
    {
        return plannedStartDate;
    }

    public void setPlannedEndDate(Date plannedEndDate) 
    {
        this.plannedEndDate = plannedEndDate;
    }

    public Date getPlannedEndDate() 
    {
        return plannedEndDate;
    }

    public void setActualStartDate(Date actualStartDate) 
    {
        this.actualStartDate = actualStartDate;
    }

    public Date getActualStartDate() 
    {
        return actualStartDate;
    }

    public void setActualEndDate(Date actualEndDate) 
    {
        this.actualEndDate = actualEndDate;
    }

    public Date getActualEndDate() 
    {
        return actualEndDate;
    }

    public void setContactUser(String contactUser) 
    {
        this.contactUser = contactUser;
    }

    public String getContactUser() 
    {
        return contactUser;
    }

    public void setContactPhone(String contactPhone) 
    {
        this.contactPhone = contactPhone;
    }

    public String getContactPhone() 
    {
        return contactPhone;
    }

    public void setContractorId(Long contractorId) 
    {
        this.contractorId = contractorId;
    }

    public Long getContractorId() 
    {
        return contractorId;
    }

    public void setContractorName(String contractorName) 
    {
        this.contractorName = contractorName;
    }

    public String getContractorName() 
    {
        return contractorName;
    }

    public void setSupervisionUnit(String supervisionUnit) 
    {
        this.supervisionUnit = supervisionUnit;
    }

    public String getSupervisionUnit() 
    {
        return supervisionUnit;
    }

    public void setSupervisionEngineer(String supervisionEngineer) 
    {
        this.supervisionEngineer = supervisionEngineer;
    }

    public String getSupervisionEngineer() 
    {
        return supervisionEngineer;
    }

    public void setContractorLeaderId(Long contractorLeaderId) 
    {
        this.contractorLeaderId = contractorLeaderId;
    }

    public Long getContractorLeaderId() 
    {
        return contractorLeaderId;
    }

    public void setContractorLeader(String contractorLeader) 
    {
        this.contractorLeader = contractorLeader;
    }

    public String getContractorLeader() 
    {
        return contractorLeader;
    }

    public void setContractorSafetyLeader(String contractorSafetyLeader) 
    {
        this.contractorSafetyLeader = contractorSafetyLeader;
    }

    public String getContractorSafetyLeader() 
    {
        return contractorSafetyLeader;
    }

    public void setOwnerLeaderId(Long ownerLeaderId) 
    {
        this.ownerLeaderId = ownerLeaderId;
    }

    public Long getOwnerLeaderId() 
    {
        return ownerLeaderId;
    }

    public void setOwnerLeader(String ownerLeader) 
    {
        this.ownerLeader = ownerLeader;
    }

    public String getOwnerLeader() 
    {
        return ownerLeader;
    }

    public void setOwnerSafetyLeader(String ownerSafetyLeader) 
    {
        this.ownerSafetyLeader = ownerSafetyLeader;
    }

    public String getOwnerSafetyLeader() 
    {
        return ownerSafetyLeader;
    }

    public void setEvaluatorIds(String evaluatorIds) 
    {
        this.evaluatorIds = evaluatorIds;
    }

    public String getEvaluatorIds() 
    {
        return evaluatorIds;
    }

    public void setEvaluatorNames(String evaluatorNames) 
    {
        this.evaluatorNames = evaluatorNames;
    }

    public String getEvaluatorNames() 
    {
        return evaluatorNames;
    }

    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatus() 
    {
        return status;
    }

    public void setDelFlag(String delFlag) 
    {
        this.delFlag = delFlag;
    }

    public String getDelFlag() 
    {
        return delFlag;
    }

    public String getSearchStatus() {
        return searchStatus;
    }

    public void setSearchStatus(String searchStatus) {
        this.searchStatus = searchStatus;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("projectNo", getProjectNo())
            .append("projectName", getProjectName())
            .append("projectType", getProjectType())
            .append("contractNo", getContractNo())
            .append("projectSection", getProjectSection())
            .append("plannedStartDate", getPlannedStartDate())
            .append("plannedEndDate", getPlannedEndDate())
            .append("actualStartDate", getActualStartDate())
            .append("actualEndDate", getActualEndDate())
            .append("contactUser", getContactUser())
            .append("contactPhone", getContactPhone())
            .append("contractorId", getContractorId())
            .append("contractorName", getContractorName())
            .append("supervisionUnit", getSupervisionUnit())
            .append("supervisionEngineer", getSupervisionEngineer())
            .append("contractorLeaderId", getContractorLeaderId())
            .append("contractorLeader", getContractorLeader())
            .append("contractorSafetyLeader", getContractorSafetyLeader())
            .append("ownerLeaderId", getOwnerLeaderId())
            .append("ownerLeader", getOwnerLeader())
            .append("ownerSafetyLeader", getOwnerSafetyLeader())
            .append("evaluatorIds", getEvaluatorIds())
            .append("evaluatorNames", getEvaluatorNames())
            .append("status", getStatus())
            .append("delFlag", getDelFlag())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}
